Page({
  data: {
    currentLocation: '北京',
    searchValue: '',
    city: '', // 城市
    demandType: '', // 类型
    chargingMode: '', // 收费模式
    gender: '', // 性别
    cityOptions: [
      { text: '全部', value: '' }, // 清空选项
      { text: '北京', value: '北京' },
      { text: '上海', value: '上海' },
      { text: '广州', value: '广州市' }
    ],
    demandTypeOptions: [
      { text: '全部', value: '' }, // 清空选项
      { text: '约模特', value: '0' }, // 0 为约模特
      { text: '约摄影师', value: '1' } // 1 为约摄影师
    ],
    chargingModeOptions: [
      { text: '全部', value: '' }, // 清空选项
      { text: '希望互免', value: '0' }, // 0 为希望互免
      { text: '费用协商', value: '1' }, // 10 为费用协商
      { text: '需要付费', value: '2' }, // 2 为需要付费
      { text: '愿意付费', value: '3' } // 3 为愿意付费
    ],
    genderOptions: [
      { text: '全部', value: '' }, // 清空选项
      { text: '男', value: '1' }, // 1 为男
      { text: '女', value: '0' } // 0 为女
    ],
    posts: [],
    page: 1,
    pageSize: 10,
    total: 0,
    swiperImages: [
      '/images/photography_competition.jpg',
      '/images/wedding_photography.jpg',
      '/images/Outfit.jpg'
    ],
    isLoading: false, // 加载状态，防止重复触发
    isNoMoreData: false, // 是否没有更多数据
    // 选项的映射关系
    optionTextMap: {
      city: { '': '全部', '北京': '北京', '上海': '上海', '广州': '广州市' },
      demandType: { '': '全部', '0': '约模特', '1': '约摄影师' },
      chargingMode: { '': '全部', '0': '希望互免', '1': '费用协商', '2': '需要付费', '3': '愿意付费' },
      gender: { '': '全部', '1': '男', '0': '女' }
    }
  },

  onLoad() {
    const userDetails = wx.getStorageSync('userDetails');
    this.loadPosts();
    this.setData({
      currentLocation: userDetails.city
    });
  },

  // 跳转到详情页
  navigateToDetail(event) {
    const id = event.currentTarget.dataset.id; // 获取帖子ID
    wx.getStorage({
      key: 'isLogin',
      success: (res) => {
        if (res.data) {
          // 已登录，跳转到详情页
          wx.navigateTo({
            url: `/demand/pages/demand_detail/demand_detail?demandId=${id}`
          });
        } else {
          // 未登录，跳转到登录页
          wx.navigateTo({
            url: '/pages/login/login'
          });
        }
      },
      fail: () => {
        // 未登录，跳转到登录页
        wx.navigateTo({
          url: '/pages/login/login'
        });
      }
    });
  },

  onSearch() {
		wx.getStorage({
      key: 'isLogin',
      success: (res) => {
        if (res.data) {
          // 已登录，跳转到详情页
          wx.navigateTo({
            url: `/demand/pages/search/search`
          });
        } else {
          // 未登录，跳转到登录页
          wx.navigateTo({
            url: '/pages/login/login'
          });
        }
      },
      fail: () => {
        // 未登录，跳转到登录页
        wx.navigateTo({
          url: '/pages/login/login'
        });
      }
    });
  },
  onCityChange(event) {
    this.setData({
      city: event.detail,
      isNoMoreData: false, // 重置 isNoMoreData
      page: 1 // 重置页码
    }, () => {
      this.loadPosts(); // 确保在数据更新后调用 loadPosts
    });
  },

  onTypeChange(event) {
    this.setData({
      demandType: event.detail,
      isNoMoreData: false, // 重置 isNoMoreData
      page: 1 // 重置页码
    }, () => {
      this.loadPosts(); // 确保在数据更新后调用 loadPosts
    });
  },

  onChargingModeChange(event) {
    this.setData({
      chargingMode: event.detail,
      isNoMoreData: false, // 重置 isNoMoreData
      page: 1 // 重置页码
    }, () => {
      this.loadPosts(); // 确保在数据更新后调用 loadPosts
    });
  },

  onGenderChange(event) {
    this.setData({
      gender: event.detail,
      isNoMoreData: false, // 重置 isNoMoreData
      page: 1 // 重置页码
    }, () => {
      this.loadPosts(); // 确保在数据更新后调用 loadPosts
    });
  },

  onPullDownRefresh() {
    // 重置数据
    this.setData({
      page: 1, // 重置页码为第一页
      posts: [], // 清空当前列表数据
      isNoMoreData: false // 重置没有更多数据的状态
    });

    // 重新加载数据
    this.loadPosts(() => {
      // 数据加载完成后停止下拉刷新动画
      wx.stopPullDownRefresh();
    });
  },

  loadPosts(callback) {
    if (this.data.isLoading || this.data.isNoMoreData) {
      console.log('阻止请求: isLoading =', this.data.isLoading, 'isNoMoreData =', this.data.isNoMoreData);
      return; // 如果正在加载或没有更多数据，直接返回
    }
    this.setData({ isLoading: true }); // 设置加载状态为 true

    const { city, demandType, chargingMode, gender, page, pageSize } = this.data;
    wx.request({
      url: 'http://localhost:8080/user/demand/page',
      method: 'GET',
      data: {
        city,
        demandType,
        chargingMode,
        gender,
        page,
        pageSize
      },
      success: (res) => {
        const { total, records } = res.data.data;
        // 预处理数据，将 tags 和 urlList 转换为数组
        const processedRecords = records.map(item => {
          const urlList = item.urlList ? item.urlList.split(',') : [];
          return {
            ...item,
            tags: item.tags ? item.tags.split(',') : [],
            UrlList: urlList
          };
        });
        this.setData({
          posts: page === 1 ? processedRecords : this.data.posts.concat(processedRecords),
          total,
          isLoading: false, // 加载完成，设置加载状态为 false
          isNoMoreData: processedRecords.length < pageSize // 判断是否没有更多数据
        });

        // 如果有回调函数，执行回调
        if (typeof callback === 'function') {
          callback();
        }
      },
      fail: () => {
        this.setData({ isLoading: false }); // 加载失败，设置加载状态为 false

        // 如果有回调函数，执行回调
        if (typeof callback === 'function') {
          callback();
        }
      }
    });
  },

  // 上拉触底事件
  onReachBottom() {
    if (this.data.isNoMoreData) {
      wx.showToast({
        title: '没有更多数据了',
        icon: 'none'
      });
      return;
    }
    this.setData({ page: this.data.page + 1 });
    this.loadPosts();
  }
});
